/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package aicue1.singletons;

import aicue1.beans.Item;
import aicue1.beans.Order;
import java.util.ArrayList;

/**
 *
 * @author Thomas
 */
public class OrdersSingleton
{
    /**
     * Privates Klassenattribut,
     * wird beim erstmaligen Gebrauch (nicht beim Laden) der Klasse erzeugt
     */
    private static OrdersSingleton ordersInstance = null;

    private ArrayList<Order> ordersList = null;

    /** Konstruktor ist privat, Klasse darf nicht von außen instanziiert werden. */
    private OrdersSingleton()
    {
        ordersList = new ArrayList<Order>();
    }

    /**
     * Statische Methode "getInstance()" liefert die einzige Instanz der Klasse zurück.
     * Ist synchronisiert und somit thread-sicher.
     */
    public synchronized static OrdersSingleton getInstance()
    {
        if (ordersInstance == null) {
           ordersInstance = new OrdersSingleton();
        }
        return ordersInstance;
    }

    public synchronized Boolean doesOrderExist(Order order)
    {
        return ordersList.contains(order);
    }

    public synchronized Boolean insertOrder(Order order)
    {
        Boolean insertOk = false;
        if(!ordersList.contains(order))
        {
            order.setId(""+ (ordersList.size()+1));
            ordersList.add(order);
            insertOk = true;
        }
        return insertOk;
    }

    public synchronized ArrayList<Item> getItems(Order order)
    {
        return ordersList.get(ordersList.indexOf(order)).getItems();
    }

    public synchronized void clearList()
    {
         ordersList.clear();
    }
}
